package org.cable.shop.component;

import org.cable.shop.vo.PayInfoVO;

/**
 * 支付策略上下文
 * @author hsj
 * @date 2023/11/22 11:31
 */
public class PayStrategyContext {

	private PayStrategy payStrategy;

	public PayStrategyContext(PayStrategy payStrategy) {
		this.payStrategy = payStrategy;
	}

	/**
	 * 根据策略对象 执行不同的下单接口
	 * @return
	 */
	public String executeUnifiedOrder(PayInfoVO payInfoVO) {
          return payStrategy.unifiedOrder(payInfoVO);
	}


	/**
	 * 根据策略对象 执行不同的退款接口
	 * @return
	 */
	public String executeRefund(PayInfoVO payInfoVO) {
		return payStrategy.refund(payInfoVO);
	}



	/**
	 * 根据策略对象 执行不同的关闭接口
	 * @return
	 */
	public String executeCloseOrder(PayInfoVO payInfoVO) {
		return payStrategy.closeOrder(payInfoVO);
	}




	/**
	 * 根据策略对象 执行不同的查询支付接口
	 * @return
	 */
	public String executeQueryStatus(PayInfoVO payInfoVO) {
		return payStrategy.queryPayStatus(payInfoVO);
	}

}
